import java.util.ArrayList;
import java.util.Iterator;


public class Operacje {

	public Signal dodaj(Signal s1, Signal s2) {
		Signal s = new Signal();
		
		ArrayList<Punkt> l1 = s1.getPoints();
		ArrayList<Punkt> l2 = s2.getPoints();
		
		ArrayList<Punkt> l = new ArrayList<Punkt>();
		s.setA(s1.getA()+s2.getA());
		s.setCiagly(true);
		s.setD(s1.getD());
		s.setF(s1.getF());
		s.setT(s1.getT());
		s.setT1(s1.getT1());
		
		for (Iterator iterator = l1.iterator(), iterator2 = l2.iterator(); iterator.hasNext() && iterator2.hasNext();) {
			Punkt punkt1 = (Punkt) iterator.next();
			Punkt punkt2 = (Punkt) iterator2.next();
			
			Punkt punkt = new Punkt();
			punkt.setRealValue(punkt1.getRealValue()+punkt2.getRealValue());
			punkt.setRealX(punkt1.getRealX());
			l.add(punkt);
		}
		s.setPoints(l);
		return s;
	}
	
	public Signal odejmij(Signal s1, Signal s2) {
		Signal s = new Signal();
		
		ArrayList<Punkt> l1 = s1.getPoints();
		ArrayList<Punkt> l2 = s2.getPoints();
		
		ArrayList<Punkt> l = new ArrayList<Punkt>();
		s.setA(-s1.getA()-s2.getA());
		s.setCiagly(true);
		s.setD(s1.getD());
		s.setF(s1.getF());
		s.setT(s1.getT());
		s.setT1(s1.getT1());
		
		for (Iterator iterator = l1.iterator(), iterator2 = l2.iterator(); iterator.hasNext() && iterator2.hasNext();) {
			Punkt punkt1 = (Punkt) iterator.next();
			Punkt punkt2 = (Punkt) iterator2.next();
			
			Punkt punkt = new Punkt();
			punkt.setRealValue(punkt1.getRealValue()-punkt2.getRealValue());
			punkt.setRealX(punkt1.getRealX());
			l.add(punkt);
		}
		s.setPoints(l);
		return s;
	}
	
	public Signal pomnoz(Signal s1, Signal s2) {
		Signal s = new Signal();
		
		ArrayList<Punkt> l1 = s1.getPoints();
		ArrayList<Punkt> l2 = s2.getPoints();
		
		ArrayList<Punkt> l = new ArrayList<Punkt>();
		s.setA(s1.getA()*s2.getA());
		s.setCiagly(true);
		s.setD(s1.getD());
		s.setF(s1.getF());
		s.setT(s1.getT());
		s.setT1(s1.getT1());
		
		for (Iterator iterator = l1.iterator(), iterator2 = l2.iterator(); iterator.hasNext() && iterator2.hasNext();) {
			Punkt punkt1 = (Punkt) iterator.next();
			Punkt punkt2 = (Punkt) iterator2.next();
			
			Punkt punkt = new Punkt();
			punkt.setRealValue(punkt1.getRealValue()*punkt2.getRealValue());
			punkt.setRealX(punkt1.getRealX());
			l.add(punkt);
		}
		s.setPoints(l);
		return s;
	}
	

	public Signal podziel(Signal s1, Signal s2) {
		Signal s = new Signal();
		
		ArrayList<Punkt> l1 = s1.getPoints();
		ArrayList<Punkt> l2 = s2.getPoints();
		
		ArrayList<Punkt> l = new ArrayList<Punkt>();
		s.setA(s1.getA()/s2.getA());
		s.setCiagly(true);
		s.setD(s1.getD());
		s.setF(s1.getF());
		s.setT(s1.getT());
		s.setT1(s1.getT1());
		
		for (Iterator iterator = l1.iterator(), iterator2 = l2.iterator(); iterator.hasNext() && iterator2.hasNext();) {
			Punkt punkt1 = (Punkt) iterator.next();
			Punkt punkt2 = (Punkt) iterator2.next();
			
			Punkt punkt = new Punkt();
			if (punkt2.getRealValue()!=0) {
				punkt.setRealValue(punkt1.getRealValue()/punkt2.getRealValue());
			}
			else punkt.setRealValue(0d);
			punkt.setRealX(punkt1.getRealX());
			l.add(punkt);
		}
		s.setPoints(l);
		return s;
	}
}
